#include <bits/stdc++.h>
using namespace std;
using uint=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128;
const int N=1e6+5;

const int mod=100003;

ll fastpow(ll a,ll n){
    ll res=1;
    while(n){
        if(n&1){
            res=res*a%mod;
        }
        a=a*a%mod;
        n>>=1;
    }
    return res;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n,m;
    cin>>m>>n;
    ll tal=fastpow(m,n);
    ll sub=m%mod*fastpow(m-1,n-1)%mod;
    cout<<(tal-sub+mod)%mod<<endl;
    

    return 0;
}

// 题目：越狱

// 描述：
// 监狱有n个房间，每个房价关押一名犯人。有m种宗教，每个犯人会信仰其中一种。
// 如果关押在相邻房间的2名犯人信仰相同的宗教，则就有可能越狱。问有多少种关押犯人的状态，可能发生越狱。答案对100003取模。
// 输入格式
//     一行，两个数m和n,分别表示宗教数和房间数。
// 输出格式
//     一个数，表示答案。
// 输入样例
// 2 3
// 输出样例
// 6